import {
  reqOrderDetailByNow,
  reqOrderAddress,
  reqSubmitOrder,
  reqPayParams,
  reqPayStatus,
} from '../../../api/index';
import moment from 'moment';
Page({
  /**
   * 页面的初始数据
   */
  data: {
    goodsId: 0, //商品id
    blessing: '', //祝福语
    goodsList: [], //商品列表
    totalPrice: 0, // 总价钱
    totalNum: 0, //总数
    showDialog: false, //控制事件选择弹窗显示和隐藏
    minDate: new Date().getTime(), //最小日期
    sendDate: '', //期望送达日期
    OrderAddress: {}, //订单地址
    buyName: '', //收货人姓名
    buyPhone: '', //收货人电话
    buyAddressId: '', //收货人地址
    remarks: '', //订单备注
    userAddressId: 0, //用户地址id
    orderId: 0, //订单id
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 保存从商品详情点击立即购买传递的商品id及祝福语

    // 咱们进入订单详情有两种方式
    // 第一种；在商品详情点击立即购买  有祝福语  商品不可能是一个列表
    // 第二种: 在购物车点击去结算     没有祝福语 商品可能是一个列表

    // 两种方式进入咱们发送请求获取订单详情的接口不是同一个
    // 在商品详情点击立即购买 发送请求用的是订单接口中的立即购买
    // 在购物车点击去结算  发送请求用的是订单接口中的确认下单
    this.setData({
      goodsId: options.goodsId, //商品id
      blessing: options.blessing, //祝福语
      remarks: options.blessing, //订单备注
    });

    // 判断是那种方式走进来的
    if (this.data.blessing) {
      //商品详情点击立即购买
      this.getOrderDetailByNow();
    } else {
      //购物车点击去结算
    }
  },

  // 专门定义通过商品详情点击立即购买发送请求获取订单详情的函数
  async getOrderDetailByNow() {
    try {
      const res = await reqOrderDetailByNow(
        this.data.goodsId,
        this.data.blessing
      );
      this.setData({
        goodsList: res.data.cartVoList,
        totalPrice: res.data.totalAmount,
        totalNum: res.data.totalCount,
      });
    } catch (error) {
      console.log(error);
      wx.showToast({
        title: '获取订单详情失败',
      });
    }
  },
  // 点击期望送达日期
  handleShowPopup() {
    this.setData({
      showDialog: true,
    });
  },
  // 点击取消
  cancel() {
    this.setData({
      showDialog: false,
    });
  },
  // 点击确定
  confirm(e) {
    this.setData({
      showDialog: false,
      sendDate: moment(e.detail).format('YYYY-MM-DD'),
      showDialog: false,
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getOrderAddress();
  },
  // 封装函数发送获取订单地址的请求
  async getOrderAddress() {
    try {
      const res = await reqOrderAddress();
      if (res.data) {
        //如果用户一个地址都没有 res.data是null
        this.setData({
          orderAddress: res.data,
          userAddressId: res.data.id,
        });
      }
    } catch (error) {
      console.log(error);
      wx.showToast({
        title: '获取订单详情失败',
      });
    }
  },
  //点击去结算
  goBuy() {
    //点击去结算
    let {
      sendDate,
      remarks,
      userAddressId,
      goodsList,
      buyName,
      buyPhone,
    } = this.data; //解构赋值
    if (buyName && buyPhone && sendDate && userAddressId && goodsList.length) {
      //判断是否填写了收货人姓名和电话
      this.getSubmitOrder({
        buyName,
         buyPhone,//收货人姓名和电话
         cartList:goodsList,//商品列表
         deliveryDate: sendDate,
         remarks,
         userAddressId
     })
    } else {
      //如果没有填写
      wx.showToast({
        title: '信息不完整，请填写完整信息',
      }); //提示用户
    }
  },
  // 提交订单的请求函数
  async  getSubmitOrder(params){//参数是一个对象
    try {  //发送请求
      const res = await reqSubmitOrder(params); //获取订单id
      this.setData({  
        orderId: res.data, //编辑 ：保存订单id
      });
      this.getPayParams(res.data); //调用获取支付参数的函数
    } catch (error) {  //如果失败
      console.log(error); 
      wx.showToast({ // 提示用户
        title: '提交订单失败',
      });
    }
  },
  // 获取支付参数的请求函数
  async getPayParams(orderId) {
    try {
      const res = await reqPayParams(orderId); //发送请求
      const res = await reqPayParams(this.data.orderId); //发送请求
    } catch (error) {
      
    }
  }
  ,
  
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});
